<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		// 将函数作为参数使用，这叫回调函数
		//1.匿名函数作为参数
		function fn(f1){
			// 相当于给传进来的匿名函数 起了个名 叫f1
			// f1 = function(){console.log("匿名函数作为参数")}
			console.log(f1)//f
			f1()
		}
		fn(function(){
			console.log("匿名函数作为参数")
		})


		//================================
		// 访问哪个作用域： 函数只取决于声明的位置，不取决于调用的位置
		var a = 10;
		function fn2(c) {
			var a = 20;
			console.log(a)//20
			c()
		}
		fn2(function(){
			console.log("a---", a)//10
		})
		// ===============================
		var m = 10;
		function fn3(b) {
			var m = 20;
			console.log(m)//20
			b(m)
		}
		fn3(function(m){
			//  m 拿到的是b传过来的参数
			console.log(m)//20
		})

		// ================================

		// 2.命名函数作为参数使用
		function fn4(fn){
			// 相当于给fn5起了个名字叫fn
			console.log("fn4")
			fn()
		}

		function fn5(){
			console.log("fn5")
		}

		fn4(fn5)
	</script>
</body>
</html>